package senior.ioExer2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/**
 * 实现文件加密解密：加密规则是读出每一个字节，取反(~)后，写入
 * 新文件，然后删除原文件，把新文件改成原文件同名的文件，
 * 解密规则类似。输入一个文件名，实现加密和解密功能
 *
 * 问题1：数字出现乱码
 * 问题2：解密后的排版跟源文件不一致
 * 已经解决
 *
 * @author shkstart
 * @creat 2022-04-17:43
 */
public class Exer6 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入文件名");
        String str = sc.next();
        try {
            encrypt(str);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    /*
    加密/解密
     */
    public static void encrypt(String str) throws IOException {
        File file = new File(str);
        if(!file.exists()){
            System.out.println("文件不存在");
            return ;
        }
        FileInputStream fis = new FileInputStream(file);
        byte[] bytes = new byte[fis.available()];
        fis.read(bytes);
        fis.close();
        for (int i = 0;i < bytes.length;i++){
            bytes[i] = (byte) ~bytes[i];
        }
        if (file.delete()) {
            System.out.println(file.getName() + "删除成功！");
        }
        File newFile = new File(str);
        FileOutputStream fos = new FileOutputStream(newFile);
        fos.write(bytes);
        fos.close();
        System.out.println(newFile.getName() + "创建成功！");
    }

}
